package com.cg.leetcode;

import org.junit.Test;

/**
 * 237.删除链表中的节点
 *
 * @program: LeetCode->LeetCode_237
 * @description: 237.删除链表中的节点
 * @author: cg
 * @create: 2021-08-31 21:08
 **/
public class LeetCode_237 {

    @Test
    public void test237() {
        ListNode head = new ListNode(4);
        ListNode second = new ListNode(5);
        ListNode third = new ListNode(1);
        ListNode fourth = new ListNode(9);
        head.next = second;
        second.next = third;
        third.next = fourth;
        deleteNode(second);
        System.out.println(head);
    }

    /**
     * 请编写一个函数，使其可以删除某个链表中给定的（非末尾）节点。传入函数的唯一参数为 要被删除的节点 。
     * <p>
     * 现有一个链表 -- head = [4,5,1,9]，它可以表示为:
     * 4 -> 5 -> 1 -> 9
     * <p>
     * 示例 1：
     * 输入：head = [4,5,1,9], node = 5
     * 输出：[4,1,9]
     * 解释：给定你链表中值为 5 的第二个节点，那么在调用了你的函数之后，该链表应变为 4 -> 1 -> 9.
     * <p>
     * 示例 2：
     * 输入：head = [4,5,1,9], node = 1
     * 输出：[4,5,9]
     * 解释：给定你链表中值为 1 的第三个节点，那么在调用了你的函数之后，该链表应变为 4 -> 5 -> 9.
     * <p>
     * 提示：
     * 1) 链表至少包含两个节点。
     * 2) 链表中所有节点的值都是唯一的。
     * 3) 给定的节点为非末尾节点并且一定是链表中的一个有效节点。
     * 4) 不要从你的函数中返回任何结果。
     *
     * @param node
     */
    public void deleteNode(ListNode node) {
        node.val = node.next.val;
        node.next = node.next.next;
    }

}
